package com.lile.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo {

	public static void main(String[] args) {
		// test1();
		// test2();
		// test3();
		// test4();
	}

	/*
	 * Collection List:元素有序(存储顺序和取出顺序一致),元素可重复。 Set:元素无序,元素唯一
	 * 需求：用List集合存储字符串并遍历。
	 */
	public static void test1() {
		// 创建集合对象
		List<String> list = new ArrayList<String>();

		// 创建并添加元素
		list.add("诸葛亮");
		list.add("司马懿");
		list.add("曹操");

		// 遍历集合
		Iterator<String> it = list.iterator();
		while (it.hasNext()) {
			String s = (String) it.next();
			System.out.println(s);
		}
	}

	// list集合中存储对象类型
	public static void test2() {
		// 创建集合对象
		List<Student> list = new ArrayList<Student>();

		// 创建学生对象
		Student s1 = new Student("潘金莲", 18);
		Student s2 = new Student("孙二娘", 19);
		Student s3 = new Student("扈三娘", 20);
		Student s4 = new Student("李师师", 21);

		// 把元素添加到集合
		list.add(s1);
		list.add(s2);
		list.add(s3);
		list.add(s4);

		// 遍历集合
		Iterator<Student> it = list.iterator();
		while (it.hasNext()) {
			Student s = (Student) it.next();
			System.out.println(s.getName() + "---" + s.getAge());
		}

		System.out.println("=========================");

		// 遍历
		for (int x = 0; x < list.size(); x++) {
			Student s = (Student) list.get(x);
			System.out.println(s.getName() + "---" + s.getAge());
		}
	}

	/*
	 * List集合的特有功能： void add(int index,Object obj):在指定索引位置添加元素 Object remove(int
	 * index):删除指定索引位置的元素，并把删除掉的元素值返回 Object get(int index):根据给定索引，返回元素 Object
	 * set(int index,E element):修改指定索引处的元素为给定的元素，并返回被修改的值
	 */
	public static void test3() {
		// 创建集合
		// Collection c = new ArrayList();
		List<String> list = new ArrayList<String>();

		// 测试功能
		list.add("hello");
		list.add("world");
		list.add("java");

		// void add(int index,Object obj):在指定索引位置添加元素
		// list.add(1, "android");
		// list.add(3, "android");
		// list.add(4, "android"); //有问题

		// Object remove(int index):删除指定索引位置的元素，并把删除掉的元素值返回
		// System.out.println("remove:" + list.remove(1));

		// Object get(int index):根据给定索引，返回元素
		// System.out.println("get:" + list.get(1));

		// Object set(int index,E element):修改指定索引处的元素为给定的元素，并返回被修改的值
		System.out.println("set:" + list.set(1, "android"));

		System.out.println("list:" + list);
	}

	/*
	 * List集合的特有遍历：普通for循环 size()方法和get()方法结合使用
	 */
	public static void test4() {
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("world");
		list.add("java");

		for (int x = 0; x < list.size(); x++) {
			// System.out.println(list.get(x));
			String s = (String) list.get(x);
			System.out.println(s);
		}

	}
}
